home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 1999 January / PC Plus Super CD No55a (PCP-147A-1-99) (Disc 1) (1998).iso / full / delphi1 / Disk1 / MANUALS.TXT < prev    next >
Encoding:
Text File  |  1995-08-24  |  16.1 KB  |  442 lines

  1.                         ===========
  2.                         MANUALS.TXT
  3.                         ===========
  4.  
  5. This file contains updates to the Delphi books, online Help, and
  6. interactive tutors and lists online text files.
  7.  
  8. CONTENTS:
  9. 1. ONLINE TEXT FILES
  10.  
  11. 2. DELPHI BOOKS:
  12.    Delphi User's Guide
  13.    Delphi Component Writer's Guide
  14.    Delphi Database Application Developer's Guide
  15.    InterBase Language Reference
  16.    Local InterBase Server User's Guide
  17.  
  18. 3. ONLINE HELP
  19.  
  20. ===========================================================================
  21. 1. ONLINE TEXT FILES
  22.    The following online text files provide additional
  23.    documentation:
  24.  
  25.      INSTALL.TXT  - Located in \DELPHI, contains information on
  26.                     troubleshooting installation and
  27.                     configuration problems.
  28.      README.TXT   - Located in \DELPHI, includes late-breaking
  29.                     information, compatibility notes, a list of
  30.                     all example programs, and information on how
  31.                     to get help from Borland.
  32.      READRS.TXT   - Located in \RPTSMITH, README for ReportSmith.
  33.      READIB.TXT   - Located in \IBLOCAL, README for the Local
  34.                     InterBase Server.
  35.      READLINK.TXT - Located in \IDAPI, README for the Borland
  36.                     Database Engine.
  37.      READDBD.TXT  - Located in \DBD, README for the Database
  38.                     Desktop.
  39.      FILELIST.TXT - Located in \DELPHI, contains a list of all
  40.                     files installed by the SETUP program.
  41.      DEPLOY.TXT   - Located in \DELPHI, contains important
  42.                     information about licensing and
  43.                     redistribution of Delphi, ReportSmith,
  44.                     and InterBase applications.
  45.      MANUALS.TXT  - This file.
  46.      INIFILE.TXT  - Located in \DELPHI\DOC, tells you how to
  47.                     customize Delphi via settings in
  48.                     \WINDOWS\DELPHI.INI. Also provides section
  49.                     naming conventions for component writers
  50.                     wishing to store and retrieve design-time
  51.                     information in DELPHI.INI.
  52.      ASCIIDRV.TXT - Located in \DELPHI\DOC, provides information
  53.                     about the ASCII text driver for the BDE.
  54.      VB2DELPH.WRI - Located in \DELPHI\DOC, this technical paper
  55.                     provides hints for Visual Basic who are
  56.                     converting their projects to Delphi.
  57.      TOOLINTF.PAS - Defines the Delphi Open Tools API which
  58.                     allows your custom version control .DLL or
  59.                     expert to interface with the Delphi
  60.                     environment.
  61.      VCSINTF.PAS  - Defines the interface you must provide so
  62.                     Delphi can call your custom version control
  63.                     DLL's entry points.
  64.      VIRTINTF.PAS - Base classes for your custom version control
  65.                     and experts to inherit from.
  66.      EXPTINTF.PAS - Defines the interface you must provide so
  67.                     Delphi can call your expert's entry points.
  68.      ISTREAMS.PAS - Defines a virtual stream interface for
  69.                     communicating data to the Delphi environment.
  70.      DBCTRLS.PAS  - The source code to the DBCTRLS unit to help
  71.                     you understand how to write data aware
  72.                     controls.
  73.  
  74. 2. DELPHI BOOKS
  75.  
  76. Delphi User's Guide
  77. ===================
  78.  
  79. Legal Page:
  80. -----------
  81. The REDIST.TXT file noted on this page is now called DEPLOY.TXT.
  82.  
  83. Chapter 5, Writing Object Pascal Code
  84. -------------------------------------
  85. Pages 168, 169, 170: To successfully run the examples on these
  86. pages, add WinCrt to the Uses clause.
  87.  
  88. Chapter 10, Text Editor Example
  89. -------------------------------
  90. Page 308: The example step starting with "Add Printers..."
  91. should read: "Add Printers and WinCrt to the uses clause".
  92.  
  93. Chapter 15, OLE example
  94. -----------------------
  95. Page 384: Figure 14.2, the DDE Info Dialog box, has changed in
  96. the following ways: App is now labeled DdeService, Topic is now
  97. labeled DdeTopic, and a Help button is located in the lower right
  98. corner of the box.
  99.  
  100. Page 385: The first sentence on this page, beginning with "The
  101. App and Topic boxes..."  should read "The DDEService and DDETopic
  102. edit boxes...".
  103.  
  104. The OLE example application has changed in the following ways:
  105. OLEObjectForm should have the following code attached to its
  106. OnClose event handler:
  107.  
  108. procedure TOLEObjectForm.FormClose(Sender: TObject;
  109.   var Action:TCloseAction);
  110. begin
  111.   Action := caFree;
  112. end;
  113.  
  114. Without this code, MDI child windows will minimize by default
  115. (instead of closing).
  116.  
  117. Page 420: The call to PasteSpecialDlg in the Edit|Paste Special
  118. event handler should read:
  119.  
  120.   if PasteSpecialDlg(Self, OLEFrameForm.Fmts, 0, ClipFmt, DataHand,
  121.                      Info) then...
  122.  
  123.  
  124. Delphi Component Writer's Guide
  125. ===============================
  126.  
  127. Chapter 1, Overview of component creation
  128. -----------------------------------------
  129. Page 11: In the last paragraph on the page, both references to
  130. TWinControl should be to TCustomControl.
  131.  
  132. Chapter 10, Creating a graphic control
  133. --------------------------------------
  134. Pages 94 and 98:
  135. The Invalidate method does not take a parameter.
  136.  
  137. Chapter 11, Customizing a grid
  138. ------------------------------
  139. Page 103:
  140. The last line in the Create constructor should read
  141.  
  142.    Options := Options - [goRangeSelect] + [goDrawFocusSelected];
  143.  
  144. Page 107: The implementation of the IsLeapYear method is missing
  145. one of its parentheses.  The correct implementation follows:
  146.  
  147.   function TSampleCalendar.IsLeapYear: Boolean;
  148.   begin
  149.     Result := (Year mod 4 = 0)
  150.       and ((Year mod 100 <> 0)
  151.       or (Year mod 400 = 0));
  152.   end;
  153.  
  154. The DaysThisMonth method implementation is missing the
  155. "TSampleCalendar."  in front of its identifier.
  156.  
  157. The identifier February in the implementation of DaysThisMonth
  158. should be the number 2.
  159.  
  160. Chapter 12, Making a control data-aware
  161. ---------------------------------------
  162. Page 116: The Calendar component on the Samples page already has
  163. a ReadOnly property, so you do not need to add it if you start
  164. with TCalendar instead of TSampleCalendar.
  165.  
  166. Page 117: The implementation of the UpdateCalendar method is
  167. missing the "TDBCalendar."  in front of its identifier.
  168.  
  169. Page 118: You must add the DB and DBTables units to the uses
  170. clause of the component's unit to access the data-awareness
  171. features.
  172.  
  173.  
  174. Delphi Database Application Developer's Guide
  175. =============================================
  176.  
  177. Chapter 3, Using data access components and tools
  178. --------------------------------------------------
  179. Pages 68-69
  180. The description of OnCalcFields and AutoCalcFields in
  181. Chapter 3 is not correct.  For the correct description, see
  182. online help.
  183.  
  184. Page 79
  185. A dynamic set of TFields is created both at run time and
  186. design time if a persistent set of TFields is not created at
  187. design time with the Fields Editor.
  188.  
  189. Chapter 6, Building a client/server application
  190. -----------------------------------------------
  191. The description in Chapter 6 of Connected,
  192. Database.KeepConnection and Session.KeepConnections is not
  193. correct.  For the correct description, see online Help.
  194.  
  195. New information: The Resync method of TDataset enables you to
  196. resynchronize datasets after direct calls to the Borland Database
  197. engine, or after entering data to make sure the new data is
  198. displayed in the form.
  199.  
  200. ***
  201. To execute an SQL statement containing a parameter that you don't
  202. want to bind at run-time, precede the parameter name with a
  203. double colon (for example, ::Parameter1). This is only necessary
  204. in the rare case when you don't want the BDE to bind a value to
  205. the parameter, for example in creating a stored procedure with a
  206. TQuery.
  207.  
  208. ***
  209. In a master-detail form, adding a new record to the detail table
  210. may cause a problem if there are linked NOT NULL fields in the
  211. detail table.  In particular, Sybase servers will return an
  212. error.  To avoid this, enter default values in the OnNewRecord
  213. event.
  214.  
  215. ***
  216. There is a new type to encapsulate table locks:
  217.  
  218.   TLockType = (ltReadLock, ltWriteLock);
  219.  
  220. TTable has two new methods that take a TLockType argument:
  221.  
  222.   procedure LockTable(LockType: TLockType);
  223.   procedure UnlockTable(LockType: TLockType);
  224.  
  225. These methods will lock the table and unlock the table,
  226. respectively. You can place multiple locks of different types on
  227. a table. For each lock placed, a corresponding call to
  228. UnlockTable with the same lock type is required or the table will
  229. remain locked. Read locks prevent other sessions from placing a
  230. write lock; placing a write lock prevents other sessions from
  231. placing ANY locks.
  232.  
  233. An exception will be raised if the table is closed or the
  234. requested lock cannot be obtained. Locks only affect other
  235. sessions. For example two TTable components in the same session
  236. that refer to the same physical table share the same locks and a
  237. LockTable performed on one will not prevent access by the other.
  238.  
  239. These methods are primarily intended for use with Paradox and
  240. dBASE tables. For dBASE tables, read locks are automatically
  241. promoted to write locks. For SQL tables, read and write are the
  242. same and the behavior varies according to the server.
  243.  
  244. ***
  245. TStringField and TMemoField have a Boolean Transliterate
  246. property. When Transliterate is False, Delphi does not
  247. perform any  ANSI/OEM conversion.
  248.  
  249. ***
  250. TTable has a RenameTable method that renames the underlying
  251. database table (for Paradox and dBASE tables only). This method
  252. will rename all associated files (indexes, Blob files, and so
  253. on).
  254.  
  255.  
  256. InterBase Language Reference
  257. ============================
  258.  
  259. The InterBase Language Reference and Data Definition Guides were
  260. created to accompany the InterBase Workgroup Server and contain
  261. features that are unsupported on the Local InterBase Workgroup
  262. Server. Refer to the READIB.TXT for a list unsupported features.
  263.  
  264. The reserved word 'DISPLAY' is not included in the list of
  265. keywords in Appendix A of the InterBase Language Reference.
  266.  
  267.  
  268. Local InterBase Server User's Guide
  269. ===================================
  270.  
  271. The dialog box that controls connecting to a database differs
  272. from the explanation present in the User's Guide.  The User's
  273. Guide does not show the Local and Remote server buttons (Page
  274. 40).  If those buttons are present, refer to the on-line help for
  275. information.  Similarly, the discussion of creating a database
  276. should mention that a database can be created on a remote server
  277. as well as the local server (pages 40, 73).
  278.  
  279. User Name and password are required for connection to a remote
  280. database server.  Refer to the online help for information on
  281. connecting to remote databases.
  282.  
  283. The discussion on the Server/Database Tree should mention both
  284. local and remote databases.  When Server Manager is used with
  285. Local InterBase Server, only local branches of the tree are
  286. accessible (page 139).  After a connection is made to a remote
  287. server, the databases on the remote server are shown in Server
  288. Manager windows.
  289.  
  290. In Appendix C of the Local InterBase User's Guide (page 189), the
  291. first sentence of the second paragraph states, "The database
  292. (EMPLOYEE.GDB) is created with the data definition file,
  293. CREATEDB.SQL".  That statement is no longer correct.  The
  294. EMPLOYEE.GDB database is already built and included with Local
  295. InterBase Server.  The user does not have to build it.
  296.  
  297. 3. ONLINE HELP:
  298.  
  299. Installation Help
  300. =================
  301. Help for the first Delphi Installation Dialog box lists Turbo
  302. Debugger as one of the products installed with Delphi. Turbo
  303. Debugger is not included with this version of Delphi.
  304.  
  305. Run-Time Library information:
  306. =============================
  307. Run-Time Library examples that use Writeln: in order to use
  308. Writeln you must add WinCrt to the Uses clause.
  309.  
  310. VCL information:
  311. ================
  312. Please note the following new VCL information:
  313.  
  314. Cursor Property:
  315. ================
  316. The crNone property value hides the cursor and is not listed in
  317. the table in the "Cursor property" help topic:
  318.  
  319.   crNone = -1;
  320.  
  321. Add Method of TFieldDefs:
  322. -------------------------
  323. Declaration:
  324. procedure Add(const Name: string; DataType: TFieldType; Size:
  325.   Word; Required: Boolean);
  326.  
  327. The value of the Required parameter initializes the
  328. TFieldDefs.Required property.
  329.  
  330. Hints property of TDBNavigator:
  331. -------------------------------
  332. Declaration:
  333. property Hints: Tstrings;
  334.  
  335. Description:
  336. The Hints property allows you to customize the help hints
  337. for the buttons on the database navigator. Each hint is
  338. a string. The first string in the string object becomes the
  339. Help Hint for the first button on the navigator. The seventh
  340. hint becomes the Help Hint for the seventh button (the Edit
  341. button).
  342. If you don't want to change the Help Hint for every
  343. button, enter an empty string (") for the Help Hint you want
  344. to stay the same, or simply leave the the line blank if you
  345. are using the string list property editor of the Object Inspector
  346. for the Hints property.
  347.  
  348. ItemAtPos method of TTabSet
  349. ---------------------------
  350. Description:
  351. The declaration in the online help should read:
  352.  
  353.   function ItemAtPos(Pos: TPoint): Integer;
  354.  
  355.  
  356. GetDatabaseNames method of TSession:
  357. ------------------------------------
  358. Description:
  359. The GetDatabaseNames method clears the TStrings List parameter
  360. and fills it with the names of all BDE and application-specific
  361. aliases.
  362.  
  363. FormCount property of TScreen:
  364. ------------------------------
  365. Description:
  366. Run-time and read only. The FormCount property value contains the
  367. number of forms in the TScreen.Forms property array.
  368.  
  369. OnShowHint property of TApplication:
  370. ------------------------------------
  371. Description:
  372. The OnShowHint event occurs when the application is about to
  373. display a hint window for a Help Hint for a particular control.
  374. By writing an event handler for OnShowHint, you can change the
  375. appearance and behavior of the Help Hint. Use the HintStr, CanShow,
  376. and HintInfo parameters of the TShowHintEvent method pointer
  377. to modify the Help Hint and its window. The HintInfo parameter
  378. is a record of type THintInfo.
  379.  
  380. Brush property of TCanvas
  381. -------------------------
  382. Description:
  383. When you make changes to a bitmap that a Brush is referencing,
  384. you need to force the Brush to update itself by setting its style
  385. to bsSolid and then reassigning the bitmap to the brush:
  386.  
  387.   Canvas.Brush.Bitmap := MyBitmap;
  388.   ...
  389.   MyBitmap.Canvas.FillRect(Rect(0, 0, 8, 8));
  390.   ...
  391.   Canvas.Brush.Style := bsSolid;    { this line required }
  392.   Canvas.Brush.Bitmap := MyBitmap;
  393.  
  394. CallExitProcs procedure in SysUtils unit
  395. ----------------------------------------
  396. CallExitProcs executes all installed exit procedures. The exit
  397. procedures are executed in reverse order of definition, i.e. the
  398. last one installed is the first one to get executed. As the
  399. procedures are executed, they are removed from the exit procedure
  400. chain. Thus, following a call to CallExitProcs, the ExitProc
  401. variable (defined in the System unit) will be NIL.
  402.  
  403. CallExitProcs is intended for use in the termination procedure of
  404. a DLL. Refer to the \DELPHI\DEMOS\DB\BDEDLL directory for an
  405. example of a DLL that uses CallExitProcs as part of its shutdown
  406. handling.
  407.  
  408. Using StretchDIBits instead of Draw for bitmap printing
  409. -------------------------------------------------------
  410. Bitmap printing - When printing a bitmap, make sure to use the
  411. Windows API routine StretchDIBits. For example, here's a function
  412. that prints an arbitrary TBitmap at the specified X,Y location:
  413.  
  414.   procedure PrintBitmap(Bitmap: TBitmap; X, Y: Integer);
  415.   var
  416.     Info: PBitmapInfo;
  417.     InfoSize: Integer;
  418.     Image: Pointer;
  419.     ImageSize: Longint;
  420.   begin
  421.     with Bitmap do
  422.     begin
  423.       GetDIBSizes(Handle, InfoSize, ImageSize);
  424.       Info := MemAlloc(InfoSize);
  425.       try
  426.         Image := MemAlloc(ImageSize);
  427.         try
  428.           GetDIB(Handle, Palette, Info^, Image^);
  429.           with Info^.bmiHeader do
  430.             StretchDIBits(Printer.Canvas.Handle, X, Y, Width,
  431.               Height, 0, 0, biWidth, biHeight, Image, Info^,
  432.               DIB_RGB_COLORS, SRCCOPY);
  433.         finally
  434.           FreeMem(Image, ImageSize);
  435.         end;
  436.       finally
  437.         FreeMem(Info, InfoSize);
  438.       end;
  439.     end;
  440.   end;
  441. -----------------------------------------------------------------
  442.